<!doctype html><html><head><meta charset='UTF-8'><meta name='viewport' content='width=device-width initial-scale=1'><link href='https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,400;0,700;1,400;1,700&display=swap' rel='stylesheet' type='text/css' /><style type='text/css'>html {overflow-x: initial !important;}:root { --bg-color: #ffffff; --text-color: #333333; --select-text-bg-color: #B5D6FC; --select-text-font-color: auto; --monospace: "Lucida Console",Consolas,"Courier",monospace; --title-bar-height: 20px; }.mac-os-11 { --title-bar-height: 28px; }html { font-size: 14px; background-color: var(--bg-color); color: var(--text-color); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; }h1, h2, h3, h4, h5 { white-space: pre-wrap; }body { margin: 0px; padding: 0px; height: auto; inset: 0px; font-size: 1rem; line-height: 1.42857; overflow-x: hidden; background: inherit; }iframe { margin: auto; }a.url { word-break: break-all; }a:active, a:hover { outline: 0px; }.in-text-selection, ::selection { text-shadow: none; background: var(--select-text-bg-color); color: var(--select-text-font-color); }#write { margin: 0px auto; height: auto; width: inherit; word-break: normal; overflow-wrap: break-word; position: relative; white-space: normal; overflow-x: visible; padding-top: 36px; }#write.first-line-indent p { text-indent: 2em; }#write.first-line-indent li p, #write.first-line-indent p * { text-indent: 0px; }#write.first-line-indent li { margin-left: 2em; }.for-image #write { padding-left: 8px; padding-right: 8px; }body.typora-export { padding-left: 30px; padding-right: 30px; }.typora-export .footnote-line, .typora-export li, .typora-export p { white-space: pre-wrap; }.typora-export .task-list-item input { pointer-events: none; }@media screen and (max-width: 500px) {  body.typora-export { padding-left: 0px; padding-right: 0px; }  #write { padding-left: 20px; padding-right: 20px; }}#write li > figure:last-child { margin-bottom: 0.5rem; }#write ol, #write ul { position: relative; }img { max-width: 100%; vertical-align: middle; image-orientation: from-image; }button, input, select, textarea { color: inherit; font: inherit; }input[type="checkbox"], input[type="radio"] { line-height: normal; padding: 0px; }*, ::after, ::before { box-sizing: border-box; }#write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p, #write pre { width: inherit; }#write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p { position: relative; }p { line-height: inherit; }h1, h2, h3, h4, h5, h6 { break-after: avoid-page; break-inside: avoid; orphans: 4; }p { orphans: 4; }h1 { font-size: 2rem; }h2 { font-size: 1.8rem; }h3 { font-size: 1.6rem; }h4 { font-size: 1.4rem; }h5 { font-size: 1.2rem; }h6 { font-size: 1rem; }.md-math-block, .md-rawblock, h1, h2, h3, h4, h5, h6, p { margin-top: 1rem; margin-bottom: 1rem; }.hidden { display: none; }.md-blockmeta { color: rgb(204, 204, 204); font-weight: 700; font-style: italic; }a { cursor: pointer; }sup.md-footnote { padding: 2px 4px; background-color: rgba(238, 238, 238, 0.7); color: rgb(85, 85, 85); border-radius: 4px; cursor: pointer; }sup.md-footnote a, sup.md-footnote a:hover { color: inherit; text-transform: inherit; text-decoration: inherit; }#write input[type="checkbox"] { cursor: pointer; width: inherit; height: inherit; }figure { overflow-x: auto; margin: 1.2em 0px; max-width: calc(100% + 16px); padding: 0px; }figure > table { margin: 0px; }thead, tr { break-inside: avoid; break-after: auto; }thead { display: table-header-group; }table { border-collapse: collapse; border-spacing: 0px; width: 100%; overflow: auto; break-inside: auto; text-align: left; }table.md-table td { min-width: 32px; }.CodeMirror-gutters { border-right: 0px; background-color: inherit; }.CodeMirror-linenumber { user-select: none; }.CodeMirror { text-align: left; }.CodeMirror-placeholder { opacity: 0.3; }.CodeMirror pre { padding: 0px 4px; }.CodeMirror-lines { padding: 0px; }div.hr:focus { cursor: none; }#write pre { white-space: pre-wrap; }#write.fences-no-line-wrapping pre { white-space: pre; }#write pre.ty-contain-cm { white-space: normal; }.CodeMirror-gutters { margin-right: 4px; }.md-fences { font-size: 0.9rem; display: block; break-inside: avoid; text-align: left; overflow: visible; white-space: pre; background: inherit; position: relative !important; }.md-fences-adv-panel { width: 100%; margin-top: 10px; text-align: center; padding-top: 0px; padding-bottom: 8px; overflow-x: auto; }#write .md-fences.mock-cm { white-space: pre-wrap; }.md-fences.md-fences-with-lineno { padding-left: 0px; }#write.fences-no-line-wrapping .md-fences.mock-cm { white-space: pre; overflow-x: auto; }.md-fences.mock-cm.md-fences-with-lineno { padding-left: 8px; }.CodeMirror-line, twitterwidget { break-inside: avoid; }svg { break-inside: avoid; }.footnotes { opacity: 0.8; font-size: 0.9rem; margin-top: 1em; margin-bottom: 1em; }.footnotes + .footnotes { margin-top: 0px; }.md-reset { margin: 0px; padding: 0px; border: 0px; outline: 0px; vertical-align: top; background: 0px 0px; text-decoration: none; text-shadow: none; float: none; position: static; width: auto; height: auto; white-space: nowrap; cursor: inherit; -webkit-tap-highlight-color: transparent; line-height: normal; font-weight: 400; text-align: left; box-sizing: content-box; direction: ltr; }li div { padding-top: 0px; }blockquote { margin: 1rem 0px; }li .mathjax-block, li p { margin: 0.5rem 0px; }li blockquote { margin: 1rem 0px; }li { margin: 0px; position: relative; }blockquote > :last-child { margin-bottom: 0px; }blockquote > :first-child, li > :first-child { margin-top: 0px; }.footnotes-area { color: rgb(136, 136, 136); margin-top: 0.714rem; padding-bottom: 0.143rem; white-space: normal; }#write .footnote-line { white-space: pre-wrap; }@media print {  body, html { border: 1px solid transparent; height: 99%; break-after: avoid; break-before: avoid; font-variant-ligatures: no-common-ligatures; }  #write { margin-top: 0px; border-color: transparent !important; padding-top: 0px !important; padding-bottom: 0px !important; }  .typora-export * { -webkit-print-color-adjust: exact; }  .typora-export #write { break-after: avoid; }  .typora-export #write::after { height: 0px; }  .is-mac table { break-inside: avoid; }  #write > p:nth-child(1) { margin-top: 0px; }  .typora-export-show-outline .typora-export-sidebar { display: none; }  figure { overflow-x: visible; }}.footnote-line { margin-top: 0.714em; font-size: 0.7em; }a img, img a { cursor: pointer; }pre.md-meta-block { font-size: 0.8rem; min-height: 0.8rem; white-space: pre-wrap; background: rgb(204, 204, 204); display: block; overflow-x: hidden; }p > .md-image:only-child:not(.md-img-error) img, p > img:only-child { display: block; margin: auto; }#write.first-line-indent p > .md-image:only-child:not(.md-img-error) img { left: -2em; position: relative; }p > .md-image:only-child { display: inline-block; width: 100%; }#write .MathJax_Display { margin: 0.8em 0px 0px; }.md-math-block { width: 100%; }.md-math-block:not(:empty)::after { display: none; }.MathJax_ref { fill: currentcolor; }[contenteditable="true"]:active, [contenteditable="true"]:focus, [contenteditable="false"]:active, [contenteditable="false"]:focus { outline: 0px; box-shadow: none; }.md-task-list-item { position: relative; list-style-type: none; }.task-list-item.md-task-list-item { padding-left: 0px; }.md-task-list-item > input { position: absolute; top: 0px; left: 0px; margin-left: -1.2em; margin-top: calc(1em - 10px); border: none; }.math { font-size: 1rem; }.md-toc { min-height: 3.58rem; position: relative; font-size: 0.9rem; border-radius: 10px; }.md-toc-content { position: relative; margin-left: 0px; }.md-toc-content::after, .md-toc::after { display: none; }.md-toc-item { display: block; color: rgb(65, 131, 196); }.md-toc-item a { text-decoration: none; }.md-toc-inner:hover { text-decoration: underline; }.md-toc-inner { display: inline-block; cursor: pointer; }.md-toc-h1 .md-toc-inner { margin-left: 0px; font-weight: 700; }.md-toc-h2 .md-toc-inner { margin-left: 2em; }.md-toc-h3 .md-toc-inner { margin-left: 4em; }.md-toc-h4 .md-toc-inner { margin-left: 6em; }.md-toc-h5 .md-toc-inner { margin-left: 8em; }.md-toc-h6 .md-toc-inner { margin-left: 10em; }@media screen and (max-width: 48em) {  .md-toc-h3 .md-toc-inner { margin-left: 3.5em; }  .md-toc-h4 .md-toc-inner { margin-left: 5em; }  .md-toc-h5 .md-toc-inner { margin-left: 6.5em; }  .md-toc-h6 .md-toc-inner { margin-left: 8em; }}a.md-toc-inner { font-size: inherit; font-style: inherit; font-weight: inherit; line-height: inherit; }.footnote-line a:not(.reversefootnote) { color: inherit; }.reversefootnote { font-family: ui-monospace, sans-serif; }.md-attr { display: none; }.md-fn-count::after { content: "."; }code, pre, samp, tt { font-family: var(--monospace); }kbd { margin: 0px 0.1em; padding: 0.1em 0.6em; font-size: 0.8em; color: rgb(36, 39, 41); background: rgb(255, 255, 255); border: 1px solid rgb(173, 179, 185); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap; vertical-align: middle; }.md-comment { color: rgb(162, 127, 3); opacity: 0.6; font-family: var(--monospace); }code { text-align: left; vertical-align: initial; }a.md-print-anchor { white-space: pre !important; border-width: initial !important; border-style: none !important; border-color: initial !important; display: inline-block !important; position: absolute !important; width: 1px !important; right: 0px !important; outline: 0px !important; background: 0px 0px !important; text-decoration: initial !important; text-shadow: initial !important; }.os-windows.monocolor-emoji .md-emoji { font-family: "Segoe UI Symbol", sans-serif; }.md-diagram-panel > svg { max-width: 100%; }[lang="flow"] svg, [lang="mermaid"] svg { max-width: 100%; height: auto; }[lang="mermaid"] .node text { font-size: 1rem; }table tr th { border-bottom: 0px; }video { max-width: 100%; display: block; margin: 0px auto; }iframe { max-width: 100%; width: 100%; border: none; }.highlight td, .highlight tr { border: 0px; }mark { background: rgb(255, 255, 0); color: rgb(0, 0, 0); }.md-html-inline .md-plain, .md-html-inline strong, mark .md-inline-math, mark strong { color: inherit; }.md-expand mark .md-meta { opacity: 0.3 !important; }mark .md-meta { color: rgb(0, 0, 0); }@media print {  .typora-export h1, .typora-export h2, .typora-export h3, .typora-export h4, .typora-export h5, .typora-export h6 { break-inside: avoid; }}.md-diagram-panel .messageText { stroke: none !important; }.md-diagram-panel .start-state { fill: var(--node-fill); }.md-diagram-panel .edgeLabel rect { opacity: 1 !important; }.md-fences.md-fences-math { font-size: 1em; }.md-fences-advanced:not(.md-focus) { padding: 0px; white-space: nowrap; border: 0px; }.md-fences-advanced:not(.md-focus) { background: inherit; }.typora-export-show-outline .typora-export-content { max-width: 1440px; margin: auto; display: flex; flex-direction: row; }.typora-export-sidebar { width: 300px; font-size: 0.8rem; margin-top: 80px; margin-right: 18px; }.typora-export-show-outline #write { --webkit-flex: 2; flex: 2 1 0%; }.typora-export-sidebar .outline-content { position: fixed; top: 0px; max-height: 100%; overflow: hidden auto; padding-bottom: 30px; padding-top: 60px; width: 300px; }@media screen and (max-width: 1024px) {  .typora-export-sidebar, .typora-export-sidebar .outline-content { width: 240px; }}@media screen and (max-width: 800px) {  .typora-export-sidebar { display: none; }}.outline-content li, .outline-content ul { margin-left: 0px; margin-right: 0px; padding-left: 0px; padding-right: 0px; list-style: none; overflow-wrap: anywhere; }.outline-content ul { margin-top: 0px; margin-bottom: 0px; }.outline-content strong { font-weight: 400; }.outline-expander { width: 1rem; height: 1.42857rem; position: relative; display: table-cell; vertical-align: middle; cursor: pointer; padding-left: 4px; }.outline-expander::before { content: ""; position: relative; font-family: Ionicons; display: inline-block; font-size: 8px; vertical-align: middle; }.outline-item { padding-top: 3px; padding-bottom: 3px; cursor: pointer; }.outline-expander:hover::before { content: ""; }.outline-h1 > .outline-item { padding-left: 0px; }.outline-h2 > .outline-item { padding-left: 1em; }.outline-h3 > .outline-item { padding-left: 2em; }.outline-h4 > .outline-item { padding-left: 3em; }.outline-h5 > .outline-item { padding-left: 4em; }.outline-h6 > .outline-item { padding-left: 5em; }.outline-label { cursor: pointer; display: table-cell; vertical-align: middle; text-decoration: none; color: inherit; }.outline-label:hover { text-decoration: underline; }.outline-item:hover { border-color: rgb(245, 245, 245); background-color: var(--item-hover-bg-color); }.outline-item:hover { margin-left: -28px; margin-right: -28px; border-left: 28px solid transparent; border-right: 28px solid transparent; }.outline-item-single .outline-expander::before, .outline-item-single .outline-expander:hover::before { display: none; }.outline-item-open > .outline-item > .outline-expander::before { content: ""; }.outline-children { display: none; }.info-panel-tab-wrapper { display: none; }.outline-item-open > .outline-children { display: block; }.typora-export .outline-item { padding-top: 1px; padding-bottom: 1px; }.typora-export .outline-item:hover { margin-right: -8px; border-right: 8px solid transparent; }.typora-export .outline-expander::before { content: "+"; font-family: inherit; top: -1px; }.typora-export .outline-expander:hover::before, .typora-export .outline-item-open > .outline-item > .outline-expander::before { content: "−"; }.typora-export-collapse-outline .outline-children { display: none; }.typora-export-collapse-outline .outline-item-open > .outline-children, .typora-export-no-collapse-outline .outline-children { display: block; }.typora-export-no-collapse-outline .outline-expander::before { content: "" !important; }.typora-export-show-outline .outline-item-active > .outline-item .outline-label { font-weight: 700; }.md-inline-math-container mjx-container { zoom: 0.95; }mjx-container { break-inside: avoid; }.md-alert.md-alert-note { border-left-color: rgb(9, 105, 218); }.md-alert.md-alert-important { border-left-color: rgb(130, 80, 223); }.md-alert.md-alert-warning { border-left-color: rgb(154, 103, 0); }.md-alert.md-alert-tip { border-left-color: rgb(31, 136, 61); }.md-alert.md-alert-caution { border-left-color: rgb(207, 34, 46); }.md-alert { padding: 0px 1em; margin-bottom: 16px; color: inherit; border-left: 0.25em solid rgb(0, 0, 0); }.md-alert-text-note { color: rgb(9, 105, 218); }.md-alert-text-important { color: rgb(130, 80, 223); }.md-alert-text-warning { color: rgb(154, 103, 0); }.md-alert-text-tip { color: rgb(31, 136, 61); }.md-alert-text-caution { color: rgb(207, 34, 46); }.md-alert-text { font-size: 0.9rem; font-weight: 700; }.md-alert-text svg { fill: currentcolor; position: relative; top: 0.125em; margin-right: 1ch; overflow: visible; }.md-alert-text-container::after { content: attr(data-text); text-transform: capitalize; pointer-events: none; margin-right: 1ch; }.CodeMirror { height: auto; }.CodeMirror.cm-s-inner { background: inherit; }.CodeMirror-scroll { overflow: auto hidden; z-index: 3; }.CodeMirror-gutter-filler, .CodeMirror-scrollbar-filler { background-color: rgb(255, 255, 255); }.CodeMirror-gutters { border-right: 1px solid rgb(221, 221, 221); background: inherit; white-space: nowrap; }.CodeMirror-linenumber { padding: 0px 3px 0px 5px; text-align: right; color: rgb(153, 153, 153); }.cm-s-inner .cm-keyword { color: rgb(119, 0, 136); }.cm-s-inner .cm-atom, .cm-s-inner.cm-atom { color: rgb(34, 17, 153); }.cm-s-inner .cm-number { color: rgb(17, 102, 68); }.cm-s-inner .cm-def { color: rgb(0, 0, 255); }.cm-s-inner .cm-variable { color: rgb(0, 0, 0); }.cm-s-inner .cm-variable-2 { color: rgb(0, 85, 170); }.cm-s-inner .cm-variable-3 { color: rgb(0, 136, 85); }.cm-s-inner .cm-string { color: rgb(170, 17, 17); }.cm-s-inner .cm-property { color: rgb(0, 0, 0); }.cm-s-inner .cm-operator { color: rgb(152, 26, 26); }.cm-s-inner .cm-comment, .cm-s-inner.cm-comment { color: rgb(170, 85, 0); }.cm-s-inner .cm-string-2 { color: rgb(255, 85, 0); }.cm-s-inner .cm-meta { color: rgb(85, 85, 85); }.cm-s-inner .cm-qualifier { color: rgb(85, 85, 85); }.cm-s-inner .cm-builtin { color: rgb(51, 0, 170); }.cm-s-inner .cm-bracket { color: rgb(153, 153, 119); }.cm-s-inner .cm-tag { color: rgb(17, 119, 0); }.cm-s-inner .cm-attribute { color: rgb(0, 0, 204); }.cm-s-inner .cm-header, .cm-s-inner.cm-header { color: rgb(0, 0, 255); }.cm-s-inner .cm-quote, .cm-s-inner.cm-quote { color: rgb(0, 153, 0); }.cm-s-inner .cm-hr, .cm-s-inner.cm-hr { color: rgb(153, 153, 153); }.cm-s-inner .cm-link, .cm-s-inner.cm-link { color: rgb(0, 0, 204); }.cm-negative { color: rgb(221, 68, 68); }.cm-positive { color: rgb(34, 153, 34); }.cm-header, .cm-strong { font-weight: 700; }.cm-del { text-decoration: line-through; }.cm-em { font-style: italic; }.cm-link { text-decoration: underline; }.cm-error { color: red; }.cm-invalidchar { color: red; }.cm-constant { color: rgb(38, 139, 210); }.cm-defined { color: rgb(181, 137, 0); }div.CodeMirror span.CodeMirror-matchingbracket { color: rgb(0, 255, 0); }div.CodeMirror span.CodeMirror-nonmatchingbracket { color: rgb(255, 34, 34); }.cm-s-inner .CodeMirror-activeline-background { background: inherit; }.CodeMirror { position: relative; overflow: hidden; }.CodeMirror-scroll { height: 100%; outline: 0px; position: relative; box-sizing: content-box; background: inherit; }.CodeMirror-sizer { position: relative; }.CodeMirror-gutter-filler, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-vscrollbar { position: absolute; z-index: 6; display: none; outline: 0px; }.CodeMirror-vscrollbar { right: 0px; top: 0px; overflow: hidden; }.CodeMirror-hscrollbar { bottom: 0px; left: 0px; overflow: auto hidden; }.CodeMirror-scrollbar-filler { right: 0px; bottom: 0px; }.CodeMirror-gutter-filler { left: 0px; bottom: 0px; }.CodeMirror-gutters { position: absolute; left: 0px; top: 0px; padding-bottom: 10px; z-index: 3; overflow-y: hidden; }.CodeMirror-gutter { white-space: normal; height: 100%; box-sizing: content-box; padding-bottom: 30px; margin-bottom: -32px; display: inline-block; }.CodeMirror-gutter-wrapper { position: absolute; z-index: 4; background: 0px 0px !important; border: none !important; }.CodeMirror-gutter-background { position: absolute; top: 0px; bottom: 0px; z-index: 4; }.CodeMirror-gutter-elt { position: absolute; cursor: default; z-index: 4; }.CodeMirror-lines { cursor: text; }.CodeMirror pre { border-radius: 0px; border-width: 0px; background: 0px 0px; font-family: inherit; font-size: inherit; margin: 0px; white-space: pre; overflow-wrap: normal; color: inherit; z-index: 2; position: relative; overflow: visible; }.CodeMirror-wrap pre { overflow-wrap: break-word; white-space: pre-wrap; word-break: normal; }.CodeMirror-code pre { border-right: 30px solid transparent; width: fit-content; }.CodeMirror-wrap .CodeMirror-code pre { border-right: none; width: auto; }.CodeMirror-linebackground { position: absolute; inset: 0px; z-index: 0; }.CodeMirror-linewidget { position: relative; z-index: 2; overflow: auto; }.CodeMirror-wrap .CodeMirror-scroll { overflow-x: hidden; }.CodeMirror-measure { position: absolute; width: 100%; height: 0px; overflow: hidden; visibility: hidden; }.CodeMirror-measure pre { position: static; }.CodeMirror div.CodeMirror-cursor { position: absolute; visibility: hidden; border-right: none; width: 0px; }.CodeMirror div.CodeMirror-cursor { visibility: hidden; }.CodeMirror-focused div.CodeMirror-cursor { visibility: inherit; }.cm-searching { background: rgba(255, 255, 0, 0.4); }span.cm-underlined { text-decoration: underline; }span.cm-strikethrough { text-decoration: line-through; }.cm-tw-syntaxerror { color: rgb(255, 255, 255); background-color: rgb(153, 0, 0); }.cm-tw-deleted { text-decoration: line-through; }.cm-tw-header5 { font-weight: 700; }.cm-tw-listitem:first-child { padding-left: 10px; }.cm-tw-box { border-style: solid; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-color: inherit; border-top-width: 0px !important; }.cm-tw-underline { text-decoration: underline; }@media print {  .CodeMirror div.CodeMirror-cursor { visibility: hidden; }}/*快速自定义配置*/:root {    --monospace: "JetBrains Mono", "Fira Code", "Cascadia Code", Menlo, "Ubuntu Mono", Consolas, HYZhengYuan; /*代码字体*/    --text-font: var(--monospace); /*正文字体*/    --title-font: var(--monospace); /*标题字体*/    --latex-font: var(--monospace); /*LaTeX字体(不含英语)*/    --text-line-height: 1.6; /*正文行间距*/    --code-line-height: 1.6; /*代码块行间距*/    --p-spacing: 0.8rem; /*段间距*/    --text-size: 12px;}/* * Copyright (C) 2018 Drake, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * GitHub https://github.com/liangjingkanji/DrakeTyporaTheme */@import url();@include-when-export url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,400;0,700;1,400;1,700&display=swap');:root {    --text-color: #304455;    --bg-color: #ffffff;    --control-text-color: var(--text-color);    --meta-content-color: var(--text-color);    --active-file-border-color: var(--drake-accent);    --rawblock-edit-panel-bd: var(--code-block-bg-color);    --item-hover-bg-color: #E5E5E596;    --active-file-bg-color: var(--item-hover-bg-color);    --blur-text-color: rgba(48, 68, 85, 0.5);    --drake-accent: #31a062;    --drake-highlight: #d63200;    --a-color: var(--drake-accent);    --variable-color: var(--drake-highlight);    --outline-active-color: var(--a-color);    --code-block-bg-color: #f8f8f8;    --code-block-color: #525252;    --title-color: #273849;    --blockquote-border-color: #f66;    --blockquote-color: var(--text-color);    --blockquote-bg-color: #f8f8f8;    --strong-color: var(--title-color);    --h2-underline-color: var(--title-color);    --horizontal-divider-color: var(--title-color);    --height-light-color: var(--drake-highlight);    --height-light-border-color: var(--drake-highlight);    --yaml-color: #777777;    --yaml-bg-color: #f7f7f7;    --footnotes-bg-color: #3c3d3e;    --footnotes-highlight: #FFD760;    --table-border-color: #dfe2e5;    --table-header-bg-color: #f8f8f8;    --table-bg-color: var(--bg-color);    --table-n2-bg-color: #f8f8f8;    --input-bg-color: #f2f2f2;    --btn-hover-bg-color: #f2f2f2;    --checkbox-checked: url("data:image/svg+xml,%3Csvg class='icon' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cpath d='M425.984 726.016l384-384-59.99-61.995-324.01 324.011-152.021-152.021L213.973 512zm384-598.016q36.01 0 61.013 25.984T896 213.974v596.01q0 34.005-25.003 59.99t-61.013 25.983h-596.01q-36.011 0-61.014-25.984t-25.003-59.989v-596.01q0-34.006 25.003-59.99T213.973 128h596.011z' fill='%2365b73b'/%3E%3C/svg%3E");    --checkbox-unchecked: url("data:image/svg+xml,%3Csvg class='icon' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cpath d='M810.667 213.333v597.334H213.333V213.333h597.334m0-85.333H213.333C166.4 128 128 166.4 128 213.333v597.334C128 857.6 166.4 896 213.333 896h597.334C857.6 896 896 857.6 896 810.667V213.333C896 166.4 857.6 128 810.667 128z' fill='%23333333'/%3E%3C/svg%3E");}html {    font-size: var(--text-size);}body {    font-family: var(--text-font) !important;    color: var(--text-color);    -webkit-font-feature-settings: "liga" on, "calt" on;    -webkit-font-smoothing: subpixel-antialiased;    text-rendering: optimizeLegibility;    letter-spacing: 0;    margin: 0;    overflow-x: hidden;}p {    line-height: var(--text-line-height);}/*code block*/.md-fences {    font-size: 1rem;    padding: 0.5rem !important;    border-radius: 2px;    word-wrap: normal;    background-color: var(--code-block-bg-color);    color: var(--code-block-color);    border: none;    line-height: var(--code-line-height);}/*inline latex*/.MathJax {    font-size: 120% !important;}.MathJax text, .MathJax use {    font-family: var(--latex-font);}/*math-block latex*/.md-math-block .MathJax {    font-size: 130% !important;}/*mermaid*/[mermaid-type="journey"] line {    stroke: #7a7a7a !important;}[mermaid-type="journey"] .label {    color: #333 !important;}[id^=mermaidChart] .relationshipLabelBox {    fill: var(--bg-color) !important;    opacity: 1 !important;    background-color: var(--bg-color) !important;}[id^=mermaidChart] .legend {    fill: var(--text-color) !important;}[id^=mermaidChart] g.label {    font-size: 1rem !important;}[id^=mermaidChart] line.divider {    stroke: var(--table-border-color) !important;}[id^=mermaidChart] span.nodeLabel {    color: var(--code-block-color) !important;    line-height: 1.8rem;}tspan {    color: var(--text-color)}[id^=mermaidChart] .entityLabel {    fill: var(--code-block-color) !important;}[id^=mermaidChart] {    fill: var(--text-color) !important;}[id^=mermaidChart] rect.rect {    fill: rgba(175, 255, 212, 0.3) !important;}.md-diagram-panel-preview text.actor > tspan { /*方块文字*/    fill: var(--code-block-color) !important;    stroke: none !important;    font-family: var(--text-font) !important;    font-size: 1rem !important;}.md-diagram-panel-preview .actor, .md-diagram-panel-preview .entityBox { /*方块*/    stroke: var(--table-border-color) !important;    fill: var(--code-block-bg-color) !important;}.md-diagram-panel-preview .actor-line { /*竖线*/    stroke: var(--text-color) !important;    stroke-width: 1px;}.md-diagram-panel-preview .messageLine0 { /*横线*/    stroke-width: 1.5;    stroke-dasharray: none;    stroke: var(--text-color) !important;}.md-diagram-panel-preview .messageLine1 { /*虚线*/    stroke-width: 1.5 !important;    stroke-dasharray: 2, 2 !important;    stroke: var(--text-color) !important;}.md-diagram-panel-preview .messageText { /*描述文字*/    fill: var(--text-color) !important;    font-family: var(--text-font) !important;    font-size: 1rem !important;}.md-diagram-panel-preview .activation0 { /*长方形*/    fill: #e6e6e6 !important;    stroke: var(--text-color) !important;}.md-diagram-panel-preview .labelText, .md-diagram-panel-preview .labelText > tspan { /*循环标记*/    fill: var(--code-block-color) !important;    font-family: var(--text-font) !important;    font-size: 1rem !important;    dominant-baseline: unset;    alignment-baseline: unset;}.md-diagram-panel-preview .labelBox { /*循环标记背景*/    stroke: var(--table-border-color) !important;    fill: var(--code-block-bg-color) !important;}.md-diagram-panel-preview .loopLine { /*循环标记虚线*/    stroke: var(--text-color) !important;}.md-diagram-panel-preview .loopText, .md-diagram-panel-preview .loopText > tspan { /*循环名称*/    fill: var(--text-color) !important;    font-size: 1rem !important;}.md-diagram-panel-preview .sequenceNumber { /*序号*/    fill: var(--bg-color) !important;}pre.md-fences-advanced.md-focus .md-fences-adv-panel {    border: none;}.md-diagram-panel-preview .edgePath .path { /*箭头*/    stroke: var(--text-color) !important;}.md-diagram-panel-preview .edgeLabel rect { /*条件文字背景*/    fill: var(--bg-color) !important;}.md-diagram-panel-preview .edgeLabel span { /*条件文字*/    color: var(--text-color);}.md-diagram-panel-preview .node rect,.md-diagram-panel-preview .node circle,.md-diagram-panel-preview .node ellipse,.md-diagram-panel-preview .node polygon,.md-diagram-panel-preview .node path { /*形状*/    stroke: var(--table-border-color) !important;    fill: var(--code-block-bg-color) !important;}#write .md-diagram-panel .md-diagram-panel-preview div { /*形状内文字*/    color: var(--code-block-color);    font-family: var(--text-font) !important;    font-size: 1rem !important;}/*code snippet*/#write code, tt {    margin: 0 2px;    color: var(--drake-highlight);    background-color: #f8f8f8;    padding: 3px 5px;    border-radius: 2px;}/*variable*/var {    color: var(--variable-color);    font-weight: bold;}/*raw block*/.md-rawblock-control:not(.md-rawblock-tooltip) {    border-radius: 2px 0 2px 2px;    padding: 0.2rem !important;}.md-rawblock:hover > .md-rawblock-container {    background: none;}.md-rawblock-input {    font-size: 1rem;}.md-rawblock-tooltip-btn:hover {    background: none;}.md-rawblock:hover > .md-rawblock-tooltip {    border-radius: 2px 2px 0 0;    margin-bottom: 2px !important;}.md-rawblock-tooltip.md-rawblock-control {    border-radius: 2px 2px 0 0;    color: var(--code-block-color);}.md-rawblock-tooltip-name {    color: var(--code-block-color);    opacity: 1;}/*quote block*/blockquote:before {    display: block;    position: absolute;    content: '';    width: 4px;    left: 0;    top: 0;    height: 100%;    background-color: var(--blockquote-border-color);    border-radius: 2px;}blockquote {    color: var(--blockquote-color);    border-radius: 2px;    padding: 10px 16px;    background-color: var(--blockquote-bg-color);    position: relative;    border-left: none;}#write strong {    color: var(--strong-color);    font-weight: bold;}#write blockquote strong {    color: var(--blockquote-color);}/*link*/#write a {    color: var(--a-color);    text-decoration: none;}[md-inline=link] a {    margin: 0 .2rem;}a:any-link {    color: var(--a-color);}img {    border-left: none;    border-right: none;    vertical-align: baseline;    border-radius: 2px;}#write {    max-width: 1200px;    margin: 0 auto;    padding: 20px 30px 100px;}#typora-source .CodeMirror-lines {    max-width: 1200px;}#write > ul:first-child,#write > ol:first-child {    margin-top: 30px;}body > *:first-child {    margin-top: 0 !important;}body > *:last-child {    margin-bottom: 0 !important;}h1,h2,h3,h4,h5,h6 {    font-family: var(--title-font);    position: relative;    margin-top: 2rem;    margin-bottom: 1rem;    font-weight: bold;    line-height: 1.4;    cursor: text;    color: var(--title-color);}h3.md-focus:before, h4.md-focus:before, h5.md-focus:before, h6.md-focus:before {    visibility: hidden;}h1 {    font-size: 2rem;    text-align: center;    margin-top: 0;}h2 {    font-size: 1.8rem;    margin-bottom: 1.5rem;}.on-focus-mode h2.md-end-block.md-heading:not(.md-focus):not(.md-focus-container):after {    background-color: var(--blur-text-color) !important;}h3 {    font-size: 1.4rem;}h4 {    font-size: 1.2rem;}h5 {    font-size: 1rem;}h6 {    font-size: 1rem;}h1:hover a.anchor,h2:hover a.anchor,h3:hover a.anchor,h4:hover a.anchor,h5:hover a.anchor,h6:hover a.anchor {    text-decoration: none;}h1 tt,h1 code {    font-size: inherit !important;}h2 tt,h2 code {    font-size: inherit !important;}h3 tt,h3 code {    font-size: inherit !important;}h4 tt,h4 code {    font-size: inherit !important;}h5 tt,h5 code {    font-size: inherit !important;}h6 tt,h6 code {    font-size: inherit !important;}p, blockquote, ul, ol, dl, table {    margin: var(--p-spacing) 0;}li > ol,li > ul {    margin: 0 0;}li {    margin: 0.5em 0;}hr {    height: 2px;    padding: 0;    margin: 16px 0;    background-color: var(--horizontal-divider-color);    border: 0 none;    overflow: hidden;    box-sizing: content-box;}body > h2:first-child {    margin-top: 0;    padding-top: 0;}body > h1:first-child {    margin-top: 0;    padding-top: 0;}body > h1:first-child + h2 {    margin-top: 0;    padding-top: 0;}body > h3:first-child,body > h4:first-child,body > h5:first-child,body > h6:first-child {    margin-top: 0;    padding-top: 0;}a:first-child h1,a:first-child h2,a:first-child h3,a:first-child h4,a:first-child h5,a:first-child h6 {    margin-top: 0;    padding-top: 0;}h1 p,h2 p,h3 p,h4 p,h5 p,h6 p {    margin-top: 0;}li p.first {    display: inline-block;}ul, ol {    padding-inline-start: 2em;}ul:first-child,ol:first-child {    margin-top: 0;}ul:last-child,ol:last-child {    margin-bottom: 0;}.ty-table-edit {    margin-top: -1rem !important;}#write table {    margin-top: 1rem;    word-break: initial;    background-color: var(--table-bg-color);}table tr {    border-top: .1em solid var(--table-border-color);    margin: 0;    padding: 0;}table th {    font-weight: bold;    border: .1em solid var(--table-border-color);    border-bottom: 0;    margin: 0;    padding: 6px 13px;}table td {    border: .1em solid var(--table-border-color);    margin: 0;    padding: 6px 13px;}table thead {    background-color: var(--table-header-bg-color);}table tr:nth-child(2n) {    background-color: var(--table-n2-bg-color);}table tr th:first-child,table tr td:first-child {    margin-top: 0;}table tr th:last-child,table tr td:last-child {    margin-bottom: 0;}#write em {    padding: 0 5px 0 2px;}#write table thead th {    background-color: var(--table-header-bg-color);}/* height light */#write mark {    border: .1em solid var(--height-light-border-color);    color: var(--height-light-color);    background-color: transparent;    padding: .1rem .5rem;    border-radius: 2rem;    margin: 0 .2rem;    font-size: .95rem;}/*shortcut*/kbd {    border: .1em solid #5b5b5e;    background: transparent;    color: var(--text-color);    margin: 0 .4rem;    font-family: var(--text-font) !important;    font-size: .95rem;    padding: .3em .4em;    border-radius: .4em;    box-shadow: .1em .1em .2em rgba(0, 0, 0, 0.3);}#write del {    padding: 1px 2px;}.md-task-list-item > input {    margin-left: -1.3em;}@media print {    html {        font-size: 12px;    }    table,    pre {        page-break-inside: avoid;    }    pre {        word-wrap: break-word;    }}/*YAML*/#write pre.md-meta-block {    padding: 1rem;    font-size: 1rem;    line-height: 1.45;    background-color: var(--yaml-bg-color);    border: 0;    border-radius: 2px;    color: var(--yaml-color);    margin-top: 0 !important;}.mathjax-block > .code-tooltip {    bottom: .375rem;}#write > h3.md-focus:before {    left: -1.5625rem;    top: .375rem;}#write > h4.md-focus:before {    left: -1.5625rem;    top: .285714286rem;}#write > h5.md-focus:before {    left: -1.5625rem;    top: .285714286rem;}#write > h6.md-focus:before {    left: -1.5625rem;    top: .285714286rem;}.md-image > .md-meta {    border-radius: 2px;    font-family: initial;    padding: 2px 0 0 4px;    color: inherit;}.md-tag {    color: inherit;}.md-toc {    margin-top: 20px;    padding-bottom: 20px;}.typora-quick-open-item {    font-size: 1rem !important;    height: 50px;    padding-left: 8px;    padding-top: 4px;    padding-bottom: 4px;}#typora-quick-open {    box-shadow: 0 0 8px #00000045;    padding: 0;}.ty-quick-open-category.ty-has-prev .ty-quick-open-category-title {    border-top: none;}#typora-quick-open-input {    margin: 8px;    box-shadow: none;    border-radius: 2px;}#typora-quick-open-input input {    font-size: 1rem;    box-shadow: none;    padding-top: 2px;    padding-left: 10px;    padding-right: 10px;    line-height: 32px;    max-height: 32px;    border: none;}.modal-dialog#typora-quick-open {    border-radius: 8px;}.ty-quick-open-category-title {    padding-left: 8px;    color: #BEBEBE;    font-size: 0.8rem;    margin-bottom: 4px;}.typora-quick-open-item-path {    font-size: 0.8rem;    text-overflow: ellipsis;    white-space: nowrap;    margin-top: 1px;}/*search input*/.form-control {    border: none;    border-radius: 2px;    box-shadow: none;}#md-searchpanel .btn {    border-radius: 2px;}#search-panel-replaceall-btn {    padding-right: 5px !important;    text-align: center !important;}#search-panel-replace-btn {    text-align: center !important;}#md-searchpanel input {    background: var(--input-bg-color);    border-radius: 2px;}.searchpanel-search-option-btn {    border-radius: 2px;    border: none;    background: transparent;    color: var(--text-color);}.searchpanel-search-option-btn.active {    background: var(--text-color);    color: var(--bg-color);}.form-control:focus {    box-shadow: none;}#md-notification:before {    top: 10px;}/** focus mode */.on-focus-mode blockquote {    border-left-color: rgba(85, 85, 85, 0.12);}header,.context-menu,.megamenu-content,footer {    font-family: initial;}/*sidebar*/.file-node-content:hover .file-node-icon,.file-node-content:hover .file-node-open-state {    visibility: visible;}.file-node-content {    display: flex;    align-items: center;}.file-node-open-state {    margin-right: .5rem;}.file-node-icon {    margin-right: .5rem;}#typora-sidebar {    font-size: inherit;    font-family: var(--title-font);}.sidebar-tabs {    border-bottom: none;}.file-list-item-summary, .file-list-item-parent-loc, .file-list-item-time, .file-list-item-summary {    font-size: 0.9rem !important;    font-family: var(--text-font);}.file-list-item-file-ext-part {    display: none;}.outline-item {    font-size: 1rem;}/*footnotes mark*/#write .md-footnote {    background-color: inherit;    color: var(--drake-highlight);    font-size: 0.9rem;    border-radius: 0.9rem;    padding-left: 0;}#write .md-footnote:before {    content: "[";}#write .md-footnote:after {    content: "]";}/*footnotes content*/.md-hover-tip .code-tooltip-content {    border-radius: 2px;}/*footnotes title*/span.md-def-name {    padding-right: 3ch;    padding-left: 0;    position: relative;    font-weight: normal;}/*footnotes desc*/.footnotes {    font-size: 1rem;    font-weight: normal;    color: var(--text-color);    position: relative;}/*footnotes tooltip text*/.code-tooltip-content .md-plain {    font-size: 0.9rem;    font-family: inherit;}.code-tooltip-content code {    padding: 0 2px;    font-family: inherit;    color: var(--footnotes-highlight);    background-color: inherit;}.code-tooltip-content a {    color: var(--footnotes-highlight);}div.code-tooltip-content {    box-shadow: 0 0 8px #00000045;    background: var(--footnotes-bg-color);}.footnotes {    opacity: 1;}.md-def-name:after {    content: ". ^";    color: var(--text-color);}.md-def-footnote .md-def-name:before {    content: "";    color: var(--text-color);    position: absolute;}.md-def-name:before {    content: "";    color: var(--text-color);    position: absolute;}.md-content.md-url, .md-def-content.md-def-url.md-auto-disp {    text-decoration: none;    border-bottom: .1rem solid var(--text-color);}.CodeMirror-scroll::-webkit-scrollbar {    display: none;}.file-list-item-summary {    font-size: 1em;}.pin-outline #outline-content .outline-active strong, .pin-outline .outline-active {    font-weight: 500;    color: var(--outline-active-color);}.file-list-item.active {    border-left: 4px solid var(--drake-accent);}#md-searchpanel .btn:not(.close-btn):hover {    box-shadow: none;    background: var(--btn-hover-bg-color);}/*checkbox*/#write input[type=checkbox] {    opacity: 0;    height: 1.6rem;    width: 1.6rem;    margin-left: -2em;    margin-top: 0;    top: 0;}#write .ul-list li.md-task-list-item.task-list-done::before {    content: "";    background: var(--checkbox-checked) 0 0 no-repeat;    background-size: 100%;    display: inline-block;    position: absolute;    height: 1.6rem;    width: 1.6rem;    margin-left: -2em;}#write .ul-list li.md-task-list-item.task-list-not-done::before {    content: "";    background: var(--checkbox-unchecked) 0 0 no-repeat;    background-size: 100%;    display: inline-block;    position: absolute;    height: 1.6rem;    width: 1.6rem;    margin-left: -2em;}.task-list-item p {    line-height: 1.6rem;}/*insert table*/.btn {    border-radius: 2px;}.modal-content {    border-radius: 8px;}.btn-primary:hover, .btn-primary:active {    background-color: var(--btn-hover-bg-color);    color: var(--drake-highlight);}.btn-primary {    background-color: transparent;    color: var(--drake-highlight);}.btn-default {    background-color: transparent;}.btn:active {    box-shadow: none;    border-color: transparent;}.modal-footer {    border-top: none;}#table-insert-col, #table-insert-row {    background: var(--input-bg-color);    border-radius: 2px;}/*preference panel*/#megamenu-content {    background-image: none !important;    background-color: var(--bg-color);}#top-titlebar {    height: inherit;    background-color: var(--bg-color);}#megamenu-menu-sidebar {    background-color: var(--bg-color);    color: var(--text-color);}.long-btn {    width: inherit;    min-width: 300px;    border: 1px solid var(--text-color);    border-radius: 6px;}.megamenu-menu-panel h1 {    margin-bottom: 3rem;    text-align: left;}.megamenu-menu-panel h1, .megamenu-menu-panel h2 {    font-weight: normal;}#recent-file-panel-search-input {    height: 45px;    border: none;    border-bottom: 1px solid var(--text-color);    padding-left: 8px;}#recent-file-panel-search-input::placeholder {    color: var(--text-color);    opacity: .5;}.megamenu-menu-header {    border-bottom: none;}#recent-file-panel-action-btn {    background: none;    border: none;}#recent-file-panel-action-btn-container {    float: none;    display: inline-block;}#top-titlebar .toolbar-icon.btn.hover, #top-titlebar .toolbar-icon.btn:hover {    background-color: var(--btn-hover-bg-color);    color: var(--text-color);}.megamenu-menu-panel .btn:hover {    background-color: var(--btn-hover-bg-color) !important;    color: var(--text-color);}#recent-file-panel tbody tr:nth-child(2n-1),.megamenu-menu-panel table thead,.megamenu-menu-panel table tr {    background-color: transparent;}.megamenu-menu-panel table {    font-weight: normal;}#megamenu-back-btn {    color: var(--text-color);    border: 1px solid var(--text-color);}.megamenu-menu-header #megamenu-menu-header-title {    color: var(--text-color);}header, .context-menu, .megamenu-content, footer {    font-family: var(--text-font);}.ty-preferences select {    padding-left: 2px;}.preference-item-hint {    font-size: 14px;}a.ty-link {    color: var(--a-color);    margin: 0 .2rem;}/**    code render    Name: IntelliJ IDEA light theme    From IntelliJ IDEA by JetBrains */.cm-s-inner.CodeMirror {    background: none;    color: var(--code-block-color);}.cm-s-inner span.cm-number {    color: #a32eff;}.cm-s-inner span.cm-atom {    color: #a32eff;}.cm-s-inner span.cm-def {    color: var(--code-block-color);}.cm-s-inner span.cm-variable {    color: var(--code-block-color);}.cm-s-inner span.cm-variable-2 {    color: #00627A;}.cm-s-inner span.cm-variable-3, .cm-s-inner span.cm-type {    color: #00627A;}.cm-s-inner span.cm-property {    color: var(--code-block-color);}.cm-s-inner span.cm-keyword {    color: #d63200;}.cm-s-inner span.cm-operator {    color: var(--code-block-color);}.cm-s-inner span.cm-comment {    color: #787878;}.cm-s-inner span.cm-string {    color: #31a062;}.cm-s-inner span.cm-string-2 {    color: #31a062;}.cm-s-inner span.cm-qualifier {    color: var(--code-block-color);}.cm-s-inner span.cm-error {    color: red;}.cm-s-inner span.cm-attribute {    color: #2973b7;}.cm-s-inner span.cm-tag {    color: #2973b7;}.cm-s-inner span.cm-link {    color: #4A86E8;}.cm-s-inner span.cm-builtin {    color: var(--code-block-color);}.cm-s-inner span.cm-bracket {    color: #2973b7;}.cm-s-inner .CodeMirror-gutters {    border-right: 1px solid rgba(120, 120, 120, 0.3);    background: var(--code-block-bg-color);}.cm-s-inner .CodeMirror-linenumber {    color: #787878;}</style><title>达梦表空间文件收缩指南</title></head><body class='typora-export os-windows typora-export-show-outline typora-export-collapse-outline'><div class='typora-export-content'><div class="typora-export-sidebar"><div class="outline-content"><li class="outline-item-wrapper outline-h1 outline-item-open"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#达梦表空间文件收缩指南">达梦表空间文件收缩指南</a></div><ul class="outline-children"><li class="outline-item-wrapper outline-h3 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#查询表空间占有率">查询表空间占有率</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h3 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#查询表空间尾部数据库对象">查询表空间尾部数据库对象</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h3 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#重整表空间所有碎片">重整表空间所有碎片</a></div><ul class="outline-children"></ul></li></ul></li></div></div><div id='write'  class=''><h1 id='达梦表空间文件收缩指南'><span>达梦表空间文件收缩指南</span></h1><blockquote><p><span>在系统运行初期，基于快速上手等原因，可能我们会有意或无意的忽略</span><code>“表空间”</code><span>这一逻辑概念，直接使用数据库提供的默认表空间 —— MAIN，并且将其设置为自动扩展，扩展上限设置为不限制。这种策略虽然方便上手使用，但随着时间推移，即便业务系统用户根据时间保留周期等规则删除了大量数据（表空间碎片较多，使用率不高），但表空间文件还是可能会野蛮生长。随即服务器监控系统的因磁盘占用率指标项开始频繁告警，“收缩”表空间数据文件大小的任务开始变得势在必行！</span></p></blockquote><p><span>新版本的达梦数据库已经引入了</span><code>Oracle</code><span>类似的</span><code>alter tablespace xxx resize datafile to N</code><span>表空间文件收缩功能，不过目前可能还存在一些缺陷和限制，接下来我将项目中遇到的问题分享出来，希望能帮助到有需要的朋友。</span></p><h3 id='查询表空间占有率'><span>查询表空间占有率</span></h3><pre class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" spellcheck="false" lang="sql" style="break-inside: unset;"><div class="CodeMirror cm-s-inner cm-s-null-scroll CodeMirror-wrap" lang="sql"><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 7.59896px; left: 37px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 33px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation" style="text-rendering: auto;"><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: -33px; width: 33px;"></div><div class="CodeMirror-gutter-wrapper CodeMirror-activeline-gutter" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 24px;">1</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-keyword">SELECT</span> F<span class="cm-variable-2">.TABLESPACE_NAME</span><span class="cm-punctuation">,</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 24px;">2</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; ROUND<span class="cm-bracket">((</span>T<span class="cm-variable-2">.TOTAL_SPACE</span> <span class="cm-operator">-</span> F<span class="cm-variable-2">.FREE_SPACE</span><span class="cm-bracket">)</span> / <span class="cm-number">1024</span><span class="cm-punctuation">,</span> <span class="cm-number">2</span><span class="cm-bracket">)</span> <span class="cm-string">"USED(GB)"</span><span class="cm-punctuation">,</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 24px;">3</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; ROUND<span class="cm-bracket">(</span>F<span class="cm-variable-2">.FREE_SPACE</span> / <span class="cm-number">1024</span><span class="cm-punctuation">,</span> <span class="cm-number">2</span><span class="cm-bracket">)</span> <span class="cm-string">"FREE(GB)"</span><span class="cm-punctuation">,</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 24px;">4</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; ROUND<span class="cm-bracket">(</span>T<span class="cm-variable-2">.TOTAL_SPACE</span> / <span class="cm-number">1024</span><span class="cm-punctuation">,</span> <span class="cm-number">2</span><span class="cm-bracket">)</span> <span class="cm-string">"TOTAL(GB)"</span><span class="cm-punctuation">,</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 24px;">5</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; ROUND<span class="cm-bracket">((</span>F<span class="cm-variable-2">.FREE_SPACE</span> / T<span class="cm-variable-2">.TOTAL_SPACE</span><span class="cm-bracket">)</span> <span class="cm-operator">*</span> <span class="cm-number">100</span><span class="cm-punctuation">,</span> <span class="cm-number">2</span><span class="cm-bracket">)</span> <span class="cm-operator">||</span> <span class="cm-string">'%'</span> PER_FREE</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 24px;">6</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp;<span class="cm-keyword">FROM</span> <span class="cm-bracket">(</span><span class="cm-keyword">SELECT</span> TABLESPACE_NAME<span class="cm-punctuation">,</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 24px;">7</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ROUND<span class="cm-bracket">(</span><span class="cm-keyword">SUM</span><span class="cm-bracket">(</span>BLOCKS <span class="cm-operator">*</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 24px;">8</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="cm-bracket">(</span><span class="cm-keyword">SELECT</span> PARA_VALUE / <span class="cm-number">1024</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 24px;">9</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="cm-keyword">FROM</span> V$DM_INI</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 24px;">10</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="cm-keyword">WHERE</span> PARA_NAME <span class="cm-operator">=</span> <span class="cm-string">'GLOBAL_PAGE_SIZE'</span><span class="cm-bracket">)</span> / <span class="cm-number">1024</span><span class="cm-bracket">))</span> FREE_SPACE</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 24px;">11</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="cm-keyword">FROM</span> DBA_FREE_SPACE</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 24px;">12</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; <span class="cm-keyword">GROUP</span> <span class="cm-keyword">BY</span> TABLESPACE_NAME<span class="cm-bracket">)</span> F<span class="cm-punctuation">,</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 24px;">13</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; <span class="cm-bracket">(</span><span class="cm-keyword">SELECT</span> TABLESPACE_NAME<span class="cm-punctuation">,</span> ROUND<span class="cm-bracket">(</span><span class="cm-keyword">SUM</span><span class="cm-bracket">(</span>BYTES / <span class="cm-number">1048576</span><span class="cm-bracket">))</span> TOTAL_SPACE</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 24px;">14</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="cm-keyword">FROM</span> DBA_DATA_FILES</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 24px;">15</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; <span class="cm-keyword">GROUP</span> <span class="cm-keyword">BY</span> TABLESPACE_NAME<span class="cm-bracket">)</span> T</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 24px;">16</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-keyword">WHERE</span> F<span class="cm-variable-2">.TABLESPACE_NAME</span> <span class="cm-operator">=</span> T<span class="cm-variable-2">.TABLESPACE_NAME</span><span class="cm-punctuation">;</span></span></pre></div></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 307px;"></div><div class="CodeMirror-gutters" style="height: 307px;"><div class="CodeMirror-gutter CodeMirror-linenumbers" style="width: 32px;"></div></div></div></div></pre><p><img src="" referrerpolicy="no-referrer" alt="image-20240312164452042"></p><p>&nbsp;</p><p><span>使用以上的SQL脚本查询结果可以看到，MAIN表空间实际占用空间只有33.68G，只有不到4%的空间使用率。接下来用</span><code>alter tablespace xxx resize datafile to</code><span>语句尝试数据文件缩减，却得到如下的报错提示：</span></p><p><img src="" referrerpolicy="no-referrer" alt="无法回收簇"></p><p><span>之后无论缩减多大，都有如上的报错。后经过思考resize功能可能实现的方式，猜测裁剪表空间文件可能只能在MAIN.DBF表空间文件尾部为空闲的位置开始才能顺利截断。如下图所示，如果将表C进行转移或删除，那么使用</span><code>alter tablespace xxx resize datafile to</code><span>语句则可以截断回收</span><code>碎片空隙2</code><span>和</span><code>表C</code><span>的空闲簇空间，但碎片空隙1的大片空间则无法进行resize回收。</span></p><p><img src="" referrerpolicy="no-referrer" alt="image-20240318154831560"></p><h3 id='查询表空间尾部数据库对象'><span>查询表空间尾部数据库对象</span></h3><pre class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" spellcheck="false" lang="sql" style="break-inside: unset;"><div class="CodeMirror cm-s-inner cm-s-null-scroll CodeMirror-wrap" lang="sql"><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 7.59896px; left: 37px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 33px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation" style="text-rendering: auto;"><div style="position: relative;" class="CodeMirror-activeline"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: -33px; width: 33px;"></div><div class="CodeMirror-gutter-wrapper CodeMirror-activeline-gutter" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 24px;">1</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; <span class="cm-comment">-- 查询MAIN表空间数据文件尾部的10个表</span></span></pre></div><div class="" style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 24px;">2</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; <span class="cm-keyword">select</span> <span class="cm-keyword">distinct</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 24px;">3</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp;  o<span class="cm-variable-2">.owner</span><span class="cm-punctuation">,</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 24px;">4</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp;  e<span class="cm-variable-2">.USED</span><span class="cm-punctuation">,</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 24px;">5</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="cm-keyword">case</span> o<span class="cm-variable-2">.object_type</span> <span class="cm-keyword">when</span> <span class="cm-string">'INDEX'</span> <span class="cm-keyword">THEN</span> <span class="cm-bracket">(</span><span class="cm-keyword">select</span> i<span class="cm-variable-2">.table_name</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 24px;">6</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="cm-keyword">from</span> DBA_INDEXES i</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 24px;">7</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="cm-keyword">where</span> i<span class="cm-variable-2">.INDEX_NAME</span><span class="cm-operator">=</span>o<span class="cm-variable-2">.object_name</span><span class="cm-bracket">)</span> </span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 24px;">8</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="cm-keyword">when</span> <span class="cm-string">'TABLE'</span> <span class="cm-keyword">THEN</span> o<span class="cm-variable-2">.object_name</span> <span class="cm-keyword">else</span> <span class="cm-atom">null</span> <span class="cm-keyword">end</span> <span class="cm-keyword">as</span> <span class="cm-keyword">table_name</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 24px;">9</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; <span class="cm-keyword">from</span> v$extents e</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 24px;">10</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; <span class="cm-keyword">join</span> V$SEGMENT_INFOS s</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 24px;">11</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; <span class="cm-keyword">on</span> e<span class="cm-variable-2">.seg_id</span><span class="cm-operator">=</span>s<span class="cm-variable-2">.seg_id</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 24px;">12</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; <span class="cm-keyword">join</span> dba_objects o</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 24px;">13</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; <span class="cm-keyword">on</span> o<span class="cm-variable-2">.object_id</span><span class="cm-operator">=</span>s<span class="cm-variable-2">.obj_id</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 24px;">14</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-keyword">left</span> <span class="cm-keyword">join</span> dba_indexes i</span></pre></div><div style="position: relative;" class=""><div class="CodeMirror-gutter-wrapper" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 24px;">15</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; <span class="cm-keyword">on</span> o<span class="cm-variable-2">.object_name</span><span class="cm-operator">=</span>i<span class="cm-variable-2">.index_name</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 24px;">16</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">where</span> e<span class="cm-variable-2">.ts_id</span><span class="cm-operator">=</span><span class="cm-bracket">(</span><span class="cm-keyword">select</span> t<span class="cm-variable-2">.id</span> <span class="cm-keyword">from</span> v$tablespace t <span class="cm-keyword">where</span> name<span class="cm-operator">=</span><span class="cm-string">'MAIN'</span><span class="cm-bracket">)</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -33px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 24px;">17</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> <span class="cm-keyword">order</span> <span class="cm-keyword">by</span> extent_id <span class="cm-keyword">desc</span> <span class="cm-keyword">limit</span> <span class="cm-number">10</span><span class="cm-punctuation">;</span></span></pre></div></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 326px;"></div><div class="CodeMirror-gutters" style="height: 326px; left: 0px;"><div class="CodeMirror-gutter CodeMirror-linenumbers" style="width: 32px;"></div></div></div></div></pre><p><span>查询到表空间文件尾部是哪些表之后，想办法将这些表转移到其他地方后，再执行</span><code>alter tablespace xxx resize datafile to</code><span>语句尝试数据文件缩减即可正常进行回收。</span></p><h3 id='重整表空间所有碎片'><span>重整表空间所有碎片</span></h3><blockquote><p><span>如上面的示意图所示，当表空间碎片分布在表空间文件的各个地方时（比如图中的碎片空隙1），单纯只是转移尾部的几个表可能只能回收很小一部分磁盘空间，如果想要最大限度提高磁盘利用率，那么只有将所有表都转移到其他地方，然后将表空间文件resize到符合管理需要的大小（可根据实际需要，决定后续是否需要将表再次移动回该表空间）。推荐使用新建表空间，然后使用ALTER TABLE XXX MOVE TABLESPACE TBS_NEW语句将原表空间的所有表转移到新的表空间，下面简单描述下具体操作步骤：</span></p></blockquote><ol><li><p><span>新建一个单独的表空间，并设置表空间自动扩展： </span><code>create tablespace tbs_yw datafile &#39;YW01.DBF&#39; AUTOEXTEND ON;</code></p></li><li><p><span>将原表空间中的所有表通过下面的命令全部转移到上述新建的表空间：</span><code>alter table 模式名.表名 MOVE TABLESPACE TBS_YW;</code></p></li><li><p><span>使用表空间文件回缩命令进行表空间回收：</span><code>ALTER TABLESPACE MAIN RESIZE DATAFILE &#39;MAIN.DBF TO N_MB;</code></p></li><li><p><span>（可选）将表从新建的表空间中移动回原来的表空间</span></p><p>&nbsp;</p><p>&nbsp;</p></li></ol></div></div><script>(function(){function e(e,n,i){document.addEventListener(e,function(e){if(!e.defaultPrevented)for(var t=e.target;t&&t!=this;t=t.parentNode)if(t.matches(n)){!1===i.call(t,e)&&(e.preventDefault(),e.stopPropagation());break}},!1)}var t=document.body.parentElement,i=[],r=null,o=document.body.classList.contains("typora-export-collapse-outline");function a(){return t.scrollTop}e("click",".outline-expander",function(e){var t=this.closest(".outline-item-wrapper").classList;return t.contains("outline-item-open")?t.remove("outline-item-open"):t.add("outline-item-open"),u(),!1}),e("click",".outline-item",function(e){var t=this.querySelector(".outline-label");location.hash="#"+t.getAttribute("href"),o&&((t=this.closest(".outline-item-wrapper").classList).contains("outline-item-open")||t.add("outline-item-open"),d(),t.add("outline-item-active"))});function s(){var e=a();r=null;for(var t=0;t<i.length&&i[t][1]-e<60;t++)r=i[t]}function n(){c=setTimeout(function(){var n;i=[],n=a(),document.querySelector("#write").querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(e=>{var t=e.getAttribute("id");i.push([t,n+e.getBoundingClientRect().y])}),s(),u()},300)}var l,c,d=function(){document.querySelectorAll(".outline-item-active").forEach(e=>e.classList.remove("outline-item-active")),document.querySelectorAll(".outline-item-single.outline-item-open").forEach(e=>e.classList.remove("outline-item-open"))},u=function(){if(r&&(d(),t=document.querySelector('.outline-label[href="#'+(CSS.escape?CSS.escape(r[0]):r[0])+'"]')))if(o){var e=t.closest(".outline-item-open>ul>.outline-item-wrapper");if(e)e.classList.add("outline-item-active");else{for(var t,n=(t=t.closest(".outline-item-wrapper")).parentElement.closest(".outline-item-wrapper");n;)n=(t=n).parentElement.closest(".outline-item-wrapper");t.classList.add("outline-item-active")}}else t.closest(".outline-item-wrapper").classList.add("outline-item-active")};window.addEventListener("scroll",function(e){l&&clearTimeout(l),l=setTimeout(function(){s(),u()},300)});window.addEventListener("resize",function(e){c&&clearTimeout(c),n()}),n()})();</script></body></html>